package com.itfenghuang.day08;

import java.io.File;
import java.io.IOException;

//文件和文件操作类
public class A01_File {
    public static void main(String[] args) throws IOException {
        //javase   网络编程
        //存储数据: 数组,集合,数据库

        /**
         *  使用java代码 去操作文件和文件夹
         *
         *  1.概述
         *      首先必须知道文件和文件夹在哪
         *
         *  2.File
         *          构造方法
         *
         *
         *          注意:如果想要使用file中的方法可以使用第一个构造方法创建
         *          file创建对象
         *          如果想要进行路径拼接,使用第二个或者第三个
         *
         *   file类作用:
         *          可以表示要读写的文件的位置在哪,
         *          可以对文件或文件夹进行创建或删除操作
         *
         *  3.相对路径和绝对路径
         *      相对路径: 相对于当前项目的路径
         *      绝对路径: 从盘符开始的路径
         *
         4.创建方法
         public boolean createNewFile() 创建文件,如果路径下不存在该文件,那么创建成功,如果存在创建失败
         public boolean mkdir() 创建单级文件夹
         public boolean mkdirs() 创建多级文件夹
         5.删除方法:
         删除文件和删除文件夹
         public boolean delete()删除由此抽象路径名表示的文件或目录
         6.判断和获取方法
         判断方法
         public boolean exists() 判断文件或文件夹是否存在
         public boolean isDirectory() 判断是否是文件夹
         public boolean isFile()判断是否是文件
         获取方法:
         public String getAbsolutePath() 获取文件或文件夹绝对路径
         public String getPath() 获取file构造参数的路径
         public String getName() 获取文件或文件夹的名称
         public File[] listFiles() 获取文件夹中所有的子文件和子文件夹的File对象并存入到
         数组中

         练习:
         1.需求:  在当前项目下aaa文件夹下创建一个a.txt文件

         3. 统计一个文件夹中的每种文件个数并打印
                打印格式
                txt:    3
                doc:    4
                jpg:    2

         */

        //文件或文件夹的路径名
        //第一种创建file对象的方式
//        File file = new File("D:\\itfenghuang\\a.text");
//        System.out.println(file);

        //第一个参数 D:\itfenghuang 第二个参数 a.text
        //第二种
//        File file1 = new File("D:\\itfenghuang", "a.text");
//        System.out.println(file1);

        //第三种
//        File file2 = new File("D:\\itfenghuang");
//        File file3 = new File(file2, "a.text");
//        System.out.println(file3);


        //创建文件
        //参数:  文件位置放在哪,参数就填写哪里的路径
//        File file = new File("D:\\it\\b.txt");
        //.创建文件的方法
//        boolean result = file.createNewFile();
//        System.out.println(result);
        //.创建文件夹
//        boolean b = file.mkdir();
//        System.out.println(b);
//        File file = new File("D:\\it\\ccc\\dd");
//        System.out.println(file.mkdirs());
        //.删除方法
        //如果删除文件夹需要该文件夹必须为空
//        File file = new File("D:\\it\\aaa");
//        System.out.println(file.delete());

//        method();

        //获取ar文件夹中的所有文件和子文件夹
//        File file = new File("D:\\it");
//        File[] files = file.listFiles();
//        for (File file1 : files) {
//            System.out.println(file1);
//        }


        //练习
//        File file = new File("javase\\src\\com\\itfenghuang\\day08\\aaa\\a.txt");
//        System.out.println(file.mkdirs());

//        File file = new File("javase\\aaa");
//        if (!(file.exists())){
//            boolean b = file.mkdirs();
//        }
//        //创建文件
//        File file1 = new File(file, "a.txt");
//        boolean b = file1.createNewFile();
//        System.out.println(b);




//        2.需求:  删除一个多级文件夹   aaa
//        条件:
//        递归
//        1.进入
//                首先进入到文件夹,然后获取到改文件夹中的
//        所有的子文件和子文件夹File对象  ListFiles()
//        2.遍历File数组
//        3.判断  if(是文件){删除}else{再次调用这个方法}
//        递归最重要核心思想:  有一个方法,然后方法自己调用自己

//        File file = new File("javase\\aaa");
//        method1(file);
    }

    private static void method1(File file) {
        //获取文件夹中的所有子文件和子文件夹
        File[] files = file.listFiles();
        //遍历
        for (File file1 : files) {
            //判断
            if (file1.isFile()){
                //是文件
                file1.delete();
            }else{
                //文件夹
                method1(file1);
            }
        }
        file.delete();

    }

    private static void method() {
//        File file = new File("D:\\it\\aaa");
//        //判断
//        System.out.println(file.exists());
//        System.out.println(file.isDirectory());
//        System.out.println(file.isFile());
//        System.out.println(file.isAbsolute());
//        //获取
//        System.out.println(file.getAbsolutePath());
//        System.out.println(file.getPath());
//        System.out.println(file.getName());
    }


}
